﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using GMUtilitiesDotNet.ViewModels;
using System.ComponentModel;
using GMUtilitiesDotNet.Helpers;
using ThouShaltNotBrickLevelEditor.Code.Managers;

namespace ThouShaltNotBrickLevelEditor.ViewModels
{
    public sealed class MainViewModel : ViewModelBase
    {
        #region Constants
        #endregion

        #region Properties
        #region MainMenuViewModel
        private MainMenuViewModel mMainMenuViewModel;
        public static readonly PropertyChangedEventArgs MainMenuViewModelEventArgs = ObservableHelper.CreateArgs<MainViewModel>(x => x.MainMenuViewModel);

        /// <summary>
        /// MainMenuViewModel property.
        /// </summary>
        public MainMenuViewModel MainMenuViewModel
        {
            get { return mMainMenuViewModel; }
            private set
            {
                if (mMainMenuViewModel != value)
                {
                    Dispose(mMainMenuViewModel);
                    mMainMenuViewModel = value;
                    RaisePropertyChangedEvent(MainMenuViewModelEventArgs);
                }
            }
        }
        #endregion

        #region LevelWithToolbarViewModel
        private LevelWithToolbarViewModel mLevelWithToolbarViewModel;
        public static readonly PropertyChangedEventArgs LevelWithToolbarViewModelEventArgs = ObservableHelper.CreateArgs<MainViewModel>(x => x.LevelWithToolbarViewModel);

        /// <summary>
        /// LevelWithToolbarViewModel property.
        /// </summary>
        public LevelWithToolbarViewModel LevelWithToolbarViewModel
        {
            get { return mLevelWithToolbarViewModel; }
            private set
            {
                if (mLevelWithToolbarViewModel != value)
                {
                    Dispose(mLevelWithToolbarViewModel);
                    mLevelWithToolbarViewModel = value;
                    RaisePropertyChangedEvent(LevelWithToolbarViewModelEventArgs);
                }
            }
        }
        #endregion
        #endregion

        #region Events
        #endregion

        #region Commands
        #endregion

        #region Constructors
        public MainViewModel(LevelEditorManager pLevelEditorManager)
        {
            MainMenuViewModel = new MainMenuViewModel(pLevelEditorManager);
            LevelWithToolbarViewModel = new LevelWithToolbarViewModel(pLevelEditorManager);
        }
        #endregion

        #region Overriden Methods
        #endregion

        #region Methods
        #endregion

        #region Event Handlers
        #endregion

        #region Inner Classes
        #endregion
    }
}